﻿#define _CRT_SECURE_NO_WARNINGS
//----------------------------------
//第三章  分支与循环
//if语句
//#include <stdio.h>
//int main()
//{
//	int num;
//	scanf("%d", &num);
//	if (num % 2 == 1)
//		printf("%d是奇数", num);
//	else
//	printf("%d是偶数", num);
//	return 0;
//}
//# include <stdio.h>
//int main()
//{
//	int age = 0;
//	scanf("%d", &age);
//	if (age >= 18)
//		{printf("成年\n");
// printf("可以谈恋爱了 ")}//一个if只能控制一条语句，想要控制多条语句，需要加{}大括号
// if 后使⽤{}控制多条语句这个块也叫：程序块，或者复合语句
//	else
//		printf("未成年");
//	return 0;
//}
//-----------------------
//嵌套if
//# include <stdio.h>
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	if (num == 0)
//		printf("0\n");
//	else if (num > 0)//这⾥的if相当于嵌套在else语句中，形成了嵌套结构
//		printf("正数\n");
//	else
//		printf("负数\n");
//	return 0;
//}
//输入输入一个整数，如果是正数，再判断是奇数还是偶数，并输出；如果不是正数则输出：⾮正数。
//# include <stdio.h>
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	if (num > 0)
//	{
//		if (num % 2 == 0)
//			printf("偶数");
//		else
//			printf("奇数\n");
//	}
//	else
//		printf("非正数\n");
//
//	return 0;
//}
////练习
//#include <stdio.h>
//int main()
//{
//	int age = 0;
//	scanf("%d", &age);
//	if (age < 18)
//		printf("少年\n");
//	else
//		if (age < 44)
//			printf("青年\n");
//		else
//			if (age < 59)
//				printf("中老年\n");
//			else
//				if (age < 89)
//					printf("老年\n");
//				else
//					printf("老寿星\n");
//
//	return 0;
//}
//--------------------
//悬空else问题  else 总是跟最近的if匹配
//# include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	if (a == 1)
//		if (b == 2)
//			printf("hehe\n");//结果是什么也不打印，else 总是跟最近的if匹配
//	else
//			printf("haha\n");
//	return 0;
//}
//想要else跟第一个if匹配的话，加上大括号
//# include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 2;
//	if (a == 1)
//	{
//		printf("hehe\n");
//	}
//	else
//		printf("haha\n");
//	return 0;
//}
//------------------------
//关系操作符 >, < ,== ,!=, <= ,>= 
//# include <stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 8;
//	int c = 5;
//	if (a < b && b < c)
//		printf("hehe\n");
//	else
//		printf("ahah\n");
//	return 0;
//}
//# include <stdio.h> 
//int main()
//{
//	int age = 0;
//	scanf("%d", &age);
//	if (age >= 18 && age <= 36)//多个关系运算符不宜连用，关系运算符从左到右计算
//		printf("青年\n");
//	return 0;
//}
//------------------------
//条件操作符  exp1 ? exp2 : exp3
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d", &a);
//
//	if (a == 5)
//		b = 3;
//	else
//		b = -3;
//
//	printf("%d\n", b);
//
//	return 0;
//}
//# include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d", &a);
//	b = (a == 5 ? 3 : -3);//?  表示真，：表示假
//	printf("%d\n", b);
//	return 0;
//}
//-------------------------
//逻辑操作符 &&，||,！
//## ! 
//# include <stdio.h>
//int main()
//{
//	int flag = 0;
//	scanf("%d", &flag);
//	if (flag)//逻辑取反运算符，flag 如果为真，就打印
//	{
//		printf("do something \n");
//	}
//	if (!flag)flag 如果为假，就打印
//	{
//		printf("ahah\n");
//	}
//	return 0;
//}
//--------------
//练习 输⼊⼀个年份year，判断year是否是闰年
//能被4整除并且不能被100整除是闰年，能被400整除是闰年
//# include <stdio.h>
//int main ()
//{
//	int year;
//	scanf("%d", &year);
//	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
//		printf("闰年\n");
//	return 0;
//}
//----------------------
//短路  如果左边的表达式满⾜逻辑运算符的条件，就不再对右边的表达式求值。这种情况称为“短路”
//# include <stdio.h>
//int main()
//{
//	int i = 0, a = 0, b = 2, c = 3, d = 4;
//	//i = a++ && ++b && d++;
//	i = a++ || ++b || d++;
//	printf("%d %d %d %d %d ",i, a, b, c, d);
//	return 0;
//}
//-----------------
//switch 语句
// int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	if (n % 3 == 0)
//		printf("余数是0\n");
//	else if(n % 3 == 1)
//		printf("余数是1\n");
//	else 
//		printf("余数是2\n");
//
//	return 0;
//}

//# include <stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	switch (n % 3)
//	{
//	case 0:	
//		printf("余数是0\n");
//		break;
//	case 1 :
//		printf("余数是一\n");
//		break;
//	case 2 :
//		printf("余数是2\n");
//		break;
//
//	}
//	return 0;
//}
//-------------------------
//练习
//输⼊⼀个1~7的数字，打印对应的星期⼏
//# include <stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch (day)
//	{
//	case 1:
//		printf("星期一\n");
//		break;
//	case 2:
//		printf("星期二\n");
//		break;
//	case 3 :
//		printf("星期三\n");
//		break;
//	case 4:
//		printf("星期四\n");
//		break;
//	case 5 :
//		printf("星期五\n");
//		break;
//	case 6 :
//		printf("星期六\n");
//		break;
//	case 7 :
//		printf("星期日\n");
//		break;
//	default :
//		printf("输入错误\n");
//		break;
//	}
//	return 0;
//}
	//-------------------------
//while 循环
//# include <stdio.h>
//int main()
//{
//	while (1)
//		printf("hehe\n");
//	return 0;
//}//死循环打印
//# include <stdio.h>
//int main()
//{
//	int i = 1;
//	while (i <= 10)
//	{
//		printf("%d\n", i);
//		i++;
//	}
//	return 0;
//}
//练习  输⼊⼀个正的整数，逆序打印这个整数的每⼀位
//# include <stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	while (n)
//	{
//		printf("%d", n % 10);
//		n /= 10;
//	}
//	return 0;
//}
//------------------
//for  在屏幕上打印1~10的值
//# include <stdio.h>
//int main()
//{
//	int n = 0;
//	for (n = 1; n <= 10; n++)
//	{
//		printf("%d\n", n);
// }
//	return 0;
//}
  //练习：计算1~100之间3的倍数的数字之和
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	int sum = 0;
//	for (i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)
//			sum += i;
//		
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//优化：
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	int  sum = 0;
//	for (i = 3; i <= 100; i += 3)
//	{
//		
//		sum += i;
//	}
//	printf("%d", sum);
//	return 0;
////}
//-------------------------
//do-while 循环  先执行语句再判断
//# include <stdio.h>
//int main()
//{
//	int n = 1;
//	do
//	{
//		printf("%d\n", n);
//		n += 1;
//	} while (n <= 10);
//	return 0;
//}
//练习：输⼊⼀个正整数，计算这个整数是⼏位数？
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	scanf("%d", &i);
//	int cnt = 0;
//	do
//	{
//		i /= 10;
//		cnt++;//计数器
//	} while (i);
//	printf("%d", cnt);
//
//	return 0;
//}
// # include <stdio.h>
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);//123
//	
//	int cnt = 0;//计数器
//	
//	while (num > 0)
//	{
//		num /= 10;//0
//		cnt++;//3
//	}
//	printf("%d\n", cnt);
//
//	return 0;
//}
//---------------------------
//while循环中的break和continue
//break举例
# include <stdio.h>
//int main()
//{
//	int i = 0;
//	while (i <= 10)
//	{
//		if (i == 5)//当 i = 5 时，break 永远终止循环
//			break;
//		printf("%d", i);
//		i += 1;
//	}
//	return 0;
//}
// int main()
//{
//	int n = 1; //循环变量的初始化
//
//	while (n <= 10) //循环结束判断
//	{
//		
//		n++;
//		if (n == 5)
//			continue;
//
//		printf("%d ", n);
//	//	n++; //循环变量的调整，n++在这里会死循环，n一直等于5，无法跳出此次循环
//	}
//
//	return 0;
//}
//for循环中的break和continue
//int main()
//{
//	int i = 0;//1 2 3 ~ 10
//	for (i = 1; i <= 10; i++)
//	{
//		if (i == 5)
//			break;
//		printf("%d ", i);
//	}
//
//	return 0;
//}
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 10; i++)
//	{
//		if (i == 5)
//			continue;
//		printf("%d\n", i);
//	}
//	return 0;
//}
//int main()
//{
//	//for (初始化; 判断; 调整)
//	//{
//
//	//}
//	//对于for循环，初始化部分，判断部分，调整部分都可以省略
//	//判断部分省略掉，就意味着判断恒为真
//	for (; ;)
//	{
//		printf("hehe\n");
//	}
//
//	return 0;
//}
//dowhile循环中的break和continue
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	do
//	{
//		if (i == 5)
//			break;
//		printf("%d\n", i);
//		i++;
//	} while (i <= 10);
//		
//	return 0;
//}
//循环的嵌套
//找出100~200之间的素数，并打印在屏幕上。
//# include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 100; i <= 200; i++)
//		//产生100~ 200的数字
//	{
//		int j = 0;
//		int flag = 1;
//		for (j = 2; j <= i-1; j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag = 1)
//			printf("%d\n", i);
//	}
//
//
//	return 0;
//}
///完!!!